工作流引擎不是什么新概念,有些已经在 Windows 和其他系统中得到应用。Microsoft 已经在部分产品中嵌入了工作流引擎。但是,随着工作流日渐成为开发应用程序的主流方法,提供适用于 Windows 的单一工作流技术已经势在必行。这也正是 Windows Workflow Foundation(正式缩写是 WF )的设计初衷。由于其提供了适用于 Windows 的通用工作流技术,WF 已成为所有基于工作流应用程序的统一创建基础。Microsoft 的 Microsoft Office 2007 系统、Windows SharePoint Services 等软件,以及许多其他公司的应用程序也会使用 WF。
通过 WF 的 Windows 通用工作流技术,.NET Framework 3.0 为广大开发人员提供了一种非常有用的软件开发模式。随着面向流程的软件继续风行,工作流技术也会随之推广。
Windows Communication Foundation:支持面向服务的应用程序 无论是通过工作流还是其他方式开发,绝大多数应用程序都需要与其他应用程序进行通信。近几年来,应用程序间的通信技术发展迅速。在长达数十年的不统一之后,主要供应商之间最终达成了一致的应用程序通信协议。根据 SOAP 这一全球 Web 服务协议,基于 J2EE、.NET Framework 等不同技术平台开发的应用程序间的互操作性相比以前大为简化。它还会使面向服务的架构这一思想为更多的组织接受。
这正是 Windows Communication Foundation (WCF) 的设计初衷。有了 WCF,开发人员不必再像从前一样,处理每一类通信都要使用到不同的应用程序编程接口技术 - WCF (最初的代号为“Indigo”)以通用的 API 提供通用的方法。在 .NET Framework 3.0 环境下,大多数使用上述技术之一的应用程序将会代而使用 WCF。
Windows CardSpace:一致的数字标识用户控件 请您想一下,人们在 Internet 上是如何表示各自身份的。多数情况下是将个人的数字标识作为一个简单的用户名。再加上密码之后,就可以使用这个标识访问电子邮件帐户、网上商店、网上银行和其他一些金融机构了。尽管这种方法很简单,现在也在普遍应用,但是用户名和密码方式有着无法回避的缺点。最重要的两项是:
Windows CardSpace 实际上是更大的标识元系统的一部分。标识元系统完全基于开放的公共协议,它定义了一种全新的方式,能够使不同的数字标识技术在各个不同的平台(包括 Windows 以外的操作系统)和应用程序(包括 Internet Explorer 以外的 Web 浏览器)上使用。CardSpace 采取通用的方法来选择标识和其他 Windows 信息,因而在元系统中扮演着重要角色。并且,由于解决了基本的标识问题,CardSpace 也已经成为 .NET Framework 3.0 的重要组成部分。
Windows Presentation Foundation:适用于不同用户界面的统一方法 对几乎所有的应用程序来说,用户界面都是重要的组成部分。现在,用户对这些界面的要求越来越高了。当然,我们仍然需要传统的菜单驱动式 GUI。但是除此之外,许多应用程序还需要能够播放视频、运行动画、采用二维或三维图形,以及调用不同的文档。无论是通过安装的桌面客户端还是通过 Web 浏览器来访问应用程序,上述功能都必须可以正常使用。
一直以来,Windows 上的这些用户界面功能都是以不同方式提供的。例如,开发人员可以使用 .NET Framework 中的 Windows Forms 来创建 Windows GUI,使用 HTML、Java 小程序或 Javas cript 代码创建 Web 浏览器界面,或是使用 Windows Media Player、Adobe 的 Flash Player 等软件播放视频,文档格式则以 Microsoft Word、Adobe PDF 或其他软件进行定义。很明显,开发人员面临着巨大的挑战:如何使用不同的技术,为不同的客户端创建一致的用户界面。这相当困难。
Windows Presentation Foundation (WPF),最初代号为“Avalon”,就是为解决这一难题而设计。WPF 为所有的这些用户界面提供一致的技术基础,从而大幅简化了开发人员的工作。WPF 采用更为现代的方法,支持视频、动画、二维或三维图形以及各种类型的文档,从而可以让用户以全新的方式处理信息。此外,WPF 还为桌面客户端和浏览器客户端提供了通用基础,大大简化了二者的应用程序开发工作。
另外一个长期困扰用户界面开发人员的问题是,如何创建高效界面需要的不同角色。软件开发人员需要编写相应的界面逻辑,但是,他们并不是定义界面感观的最佳人选。一般来说,人机交互领域的设计人员和专家更适合这一工作。但是在以前的技术(如 Windows Forms)背景下,这些问题完全由开发人员决定。开发人员和设计人员之间没有实现真正有效的协作。WPF 借助于可扩展应用程序标记语言 (XAML) 解决这一问题。XAML 是一种基于 XML 的语言,允许以声明方式指定用户界面 -而非代码。这就,开发工具就能够根据设计人员创建的可视化显示,更加容易地生成和使用界面规范。实际上,Microsoft 的一款新产品 Expression Interactive Designer 就是为此而设计。使用这一工具(其他的由第三方提供),设计人员可以创建界面外观,然后生成他们所创建界面的 XAML 定义。开发人员将这些定义导入 Visual Studio 之后,就可以着手构建界面所要求的逻辑了。
开发人员创建了直接在 Windows 上运行的安装版 WPF 应用程序后,就可以使用 WPF 提供的全部功能了。但是,若要创建在 Web 浏览器内部运行的客户端程序,开发人员应创建一个 XAML 浏览器应用程序,我们通常称之为 XBAP。与安装版 WPF 应用程序的基本原理相同,XBAP 允许在可下载的浏览器应用程序中表示与用户界面相同的样式。两种应用程序可以使用相同的代码,这也就意味着开发人员不再需要针对桌面和浏览器客户端的不同技术集。特别是按照此类丰富 Internet 应用程序的现状,在安全沙箱内运行从 Internet 下载的 XBAP,将会限制应用程序的功能。但是,安装版 WPF 应用程序中提供的大量用户界面功能子集也可用于 XBAP。
WPF 安装版应用程序和 XBAP 都可以利用 WPF 的现代图形支持,其中包括使用硬件加速、支持矢量图形以及其他更多功能。通过提供更强大的图形支持功能,WPF 使得一系列数据可视化选项成为可能,而这依靠 Windows Forms 或其他的早期技术是不可能实现的。WPF 还提供了 XML Paper Specification (XPS) 的基础,可定义查看、分发和打印固定格式文档的标准格式。
保险公司可以提供一个呼叫中心,使客户可以通过电话进行投保。呼叫中心员工使用的客户端软件显示在图表的右上角,是由安装版 WPF 应用程序实现的。客户端使用 WCF 与应用程序业务逻辑进行通信,采用的是经过 WCF-WCF 通信优化的二进制协议。如图所示,呼叫中心工作人员依靠 Windows CardSpace 来选择他们在登录该应用程序时将要使用的标识。
客户还可以通过网络进行投保,而保险代理商也可以通过网络提交保单。为便于网络操作,该应用程序使用 ASP.NET 与 Web 浏览器进行通信。如图表的左下角所示,客户通过 Internet Explorer 来访问该应用程序,他们可以使用普通的 HTML 界面,也可以使用 CardSpace 来选择自主设定的标识。第三方也可以为其他客户端操作系统和浏览器实现标识选择机制,使得标识元系统能够扩展至非 Windows 客户端和 Web 浏览器。
保险代理商通过 Internet 访问该应用程序时可能需要具有更多功能的界面。因此,他们应该使用 XBAP 而非简单的 HTML 界面。如图表底部中间位置所示,这些客户可以共享呼叫中心所用 WPF 桌面应用程序提供的大部分用户界面功能。由于两者构建在同一基础之上,因此应用程序开发人员可以在两种类型的客户端中重复使用相同的代码。对于其他类型的客户端来说,代理商可以使用 CardSpace 选择他们针对该应用程序所设定的标识。
最后,此应用程序有可能需要与其他应用程序之间进行互访。如果批准客户时要求信用审核,则最有可能通过调用外部服务实现。或者此应用程序会直接收到外部软件请求,提供这些外部应用程序可以调用的服务。在这些情况下,如图表右下角所示,该应用程序依靠 WCF 使用标准 Web 服务进行通信。无论这些应用程序构建于何种技术之上,WCF 对 SOAP 的支持都使得这些应用程序之间的交互变得轻而易举。
Windows Workflow Foundation 和其他 Microsoft 技术 引入新方法肯定会影响现有方法。.NET Framework 3.0 中的新技术也不例外,每项技术都会对 Microsoft 的其他技术产生影响。当使用 WF 时,对 Windows SharePoint Services、Microsoft Office 2007 系统和 BizTalk Server 的初始影响最大。
为了使开发人员更容易地创建文档合作和其他种类信息共享的工作流应用程序,3 版 的 Windows SharePoint Services 托管了 WF 运行时。Office SharePoint Server 2007 是 Office 2007 系统的组成部分,基于 WF 支持,构建于 Windows SharePoint Services 中。此外,添加该服务器后,就可以直接在 Office 2007 客户端应用程序中显示 InfoPath 窗体,而且可以在一些普通方案(如批准一个文档)中使用一组预定义的工作流。
任何熟悉 BizTalk Server 的人现在一定已经注意到了该产品的编排功能和 WF 提供功能之间的相似性。事实上,BizTalk Server 2006 发布后,将通过 WF 替换该产品现有的编排功能,并提供可帮助将现有编排服务迁移到 WF 工作流的工具。但有一点很重要,即应了解 WF 和 BizTalk Server 2006 解决的问题是截然不同的:
• WF 提供了一个通用框架,用于创建基于工作流的 Windows 应用程序。它可以被托管在任何进程中,使用任何种类的活动,并解决任何种类的业务问题,其中包括人员和系统工作流。
• BizTalk Server 是面向企业应用程序集成、企业对企业集成和管理业务流程的许可产品。它提供了大量用于连接不同系统和软件的适配器、用于实现诸如 RosettaNet 和 SWIFT 等标准的加速器以及对企业活动监控的支持。BizTalk Server 还提供了管理基础结构和工具,以及对增长的可扩展性的支持。
因为它是 Windows 标准的工作流技术,因此 WF 以后很可能会出现在其他 Microsoft 产品和技术中。无论 Microsoft 做出什么样的选择,在客户创建的大量应用程序中都肯定会出现 WF 的身影。
Windows Communication Foundation 面向服务的通信的变化,标志着在应用程序交互方式上的进步。WCF 专为支持面向服务的应用程序而设计,正好体现了这种进步。本节将介绍 WCF 最重要的方面,包括服务和客户端、通信选项以及对安全性、可靠通信和事务的支持。
Windows Communication Foundation 和其他 Microsoft 技术 如前文所述,WCF 取代了一些用于创建分布式应用程序的早期 Microsoft 技术。大多数使用 ASP.NET Web Services、.NET Remoting、Enterprise Services、System.Messaging 或 WSE 构建的应用程序,将转而通过 WCF 进行构建。WCF 应用程序可以与 ASP.NET Web Services 应用程序交互,两者都支持标准 SOAP,也可与其他构建在 Enterprise Services、MSMQ 和 3.0 版的 WSE 上的应用程序交互。BizTalk Server 2006 也可以使用 WCF,而且未来版本的 BizTalk Server 会更直接地构建在 WCF 提供的架构上。
Windows CardSpace 无论是通过 Web 浏览器还是其他种类的客户端,用户通常会跨网络访问应用程序。这些应用程序通常需要用户以某种方式标识自己,因此结果肯定是人们必须定期获取并提供远程软件的标识信息。通过浏览器访问 Internet 应用程序,就是一个很常见的示例,内联网上的用户通常也会面临该问题。
Windows CardSpace 和标识元系统 当用户访问应用程序时,无论所使用的是 Web 浏览器还是应用程序特定的客户端,或者其他形式,一般都会提供某种数字标识。数字标识各种各样,但实际上都可由网路上的一个安全令牌表示。简单的安全令牌可能只是一个用户名,复杂的令牌则可能包含一个 X.509 证书或一个 XML 文档。无论通过何种方式,安全令牌都是目前网络上表示数字标识的典型机制。
然而,用户仍需要某种方式来一致地处理不同的数字标识。即使没有单个标识系统可以胜任,也可以创建一个标识系统的子系统,即标识元系统,从而以一致的方式使用各种数字标识。Microsoft 与其他公司通力协作,引领着定义该元系统的进程。该元系统基于开放的 Web 服务技术,如 WS-Security 和 WS-Trust 等,可定义数字标识的获取与使用方式,而无需考虑其所依赖的安全令牌类型。
发行、获取和使用数字标识的过程可以视作是获取三个不同角色的过程。这些角色如下:
• 用户:有时称为主体,用户是具有数字标识的实体。
• 标识提供者:标识提供者可以为用户提供数字标识。例如,对雇主分配给您的数字标识而言,标识提供者一般是诸如 Active Directory 的系统。对于您使用的 Amazon 数字标识而言,标识提供者将只对您有效,因为您可以定义自己的用户名和密码。不同标识提供者所创建的数字标识可以包含不同的信息,并提供不同的用户真实身份保证级别。
• 依赖方:依赖方是一个应用程序,以某种方式依赖于数字标识。依赖方将频繁使用标识(即该标识安全令牌中包含的信息)来验证用户,然后作出授权决定,如批准该用户访问某信息等。依赖方也会使用该标识获得信用卡号,来验证不同时间或出于不同目的而进行访问的同一用户。依赖方的典型示例包括 Internet 网站,如银行、网上商店和拍卖站点,以及其他通过 Web 服务接受请求的所有应用程序。
• Active Directory:虽然现在还无法实现,但 Active Directory 终将成为元系统中的一个标识提供者。
• Windows Live ID(以前称为 Passport):正如 Active Directory 一样,Microsoft 业已宣布会将 Live ID 验证系统修改为一款标识提供者。请注意,不能使用 CardSpace 来代替 Live ID,因为这两者用于解决完全不同的问题。相反,正如其他任何标识提供者一样,Live ID 将成为标识元系统的一部分。
Windows Presentation Foundation 基于工作流的逻辑、面向服务的通信和标识都是现代应用程序中的重要组成部分。但是,用户通常最关注的是他们所看到的:用户界面。WPF 的目的是为了解决现代应用程序中创建用户界面所遇到的挑战。WPF 提供了一系列相应功能来满足这些需求,如下所述。
Windows Presentation Foundation 功能 开发人员完全可以使用 C#、Visual Basic 或一些其他基于 CLR 的语言来自由构建 WPF 应用程序界面。但是,如前文所述,WPF 也允许使用基于 XML 的 XAML 来指定界面。XAML 中的元素和属性可直接映射到 WPF 提供的类和属性。例如,在下面的简单示例即使用 XAML 来定义按钮: